揭秘:亚马逊云计算内部基础设施
亚马逊数据中心内部的成排服务器。
图片来源:亚马逊网络服务公司的詹姆斯·汉密尔顿(James Hamilton)。
随着云计算日渐成为大规模计算的新范例,亚马逊已牢固地确立了主导者这一地位。2006年创办亚马逊网络服务(AWS)从而实际上开辟公共云市场后,这家零售巨头将AWS打造成了年收入达60亿美元的大公司。
在这个过程中,亚马逊的基础设施对于确保100多万客户的正常运行时间起到了至关重要的作用。这就是为什么亚马逊的服务故障会给Netflix、Reddit、Tinder和IMDB之类的流行网站带来连锁反应。去年亚马逊在弗吉尼亚州的数据中心遇到问题后,随后就出现了这种情况。
我们不妨看看亚马逊庞大的云基础设施,包括它是如何建立数据中心的,这些数据中心建于哪里(原因何在)。
亚马逊在全球运营至少30个数据中心,另外10个至15个数据中心正在规划中。亚马逊没有透露其基础设施的全部范围,不过第三方估计,其美国数据中心网络可提供的IT容量大约是600兆瓦。
知名分析师认为亚马逊是公共云领域的主导者。IT研究公司Gartner在评估云市场格局时说:“AWS是压倒性的(云计算)市场份额领导者,它提供的计算容量是另外14家提供商的计算容量总和的五倍多。”
揭开一点神秘面纱
亚马逊对其数据中心运营向来三缄其口,披露基础设施的力度远不如谷歌、Facebook和微软等其他超大规模计算领导厂商来得大。这种情况在过去几年已开始有所改变,亚马逊高管沃纳·威格尔(Werner Vogels)和詹姆斯·汉密尔顿(James Hamilton)在面向开发者社区的活动上畅谈该公司的数据中心运营情况。
亚马逊副总裁兼首席技术官沃纳·威格尔在去年的特拉维夫AWS峰会上演讲时说:“不少客户要求我们谈一谈我们数据中心的物理布局。我们平时从不大谈特谈这方面。于是,我们想为我们的网络和数据中心揭开秘密面纱。”
这些会议的主要目的是,帮助开发人员了解亚马逊在冗余和正常运行时间方面的理念。这家公司将基础设施分成11个地区,每个地区包括数据中心集群。每个地区包含多个可用性区域(Availability Zone),从而为客户提供了这一选择:镜像或备份关键的IT资产,以免停机。每当AWS遇到问题,就会出现故障“连锁反应”,这表明这项功能仍然没有充分利用起来。
规模驱动平台投入
在最近一个季度,亚马逊网络服务的经营收入其年增长率达到了81%。这也许不能直接说基础设施有类似的增长率,但有一点是可以肯定的:亚马逊正以疯狂的速度添加服务器、存储系统和新的数据中心。
亚马逊的杰出工程师詹姆斯·汉密尔顿说:“亚马逊成为一家年收入达70亿美元的企业后,每天都在添加足够的新服务器容量,以支持亚马逊所有的全球基础设施。”他在去年的Re:Invent大会上介绍了AWS的基础设施。“规模很庞大。这个庞大规模让我们得以再投入于平台、不断创新。”
据瓦格尔声称,亚马逊的数据中心战略一直专注于降低成本。他特别指出,自2006年创办亚马逊网络服务公司以来,这家公司降价已多达49次。
亚马逊首席技术官沃纳·瓦格尔。
图片来源:YouTube
瓦格尔说:“我们在数据中心中做了基础设施方面的许多创新,以降低成本。我们将这视为是一项薄利多销的业务,我们很乐意保持应有的利润。如果我们能做到成本比较低,就会让利于你们客户。”
规划和部署云计算容量的一个关键决定是,建立多大的数据中心。亚马逊的巨大规模提供了成本和运营方面的优势。汉密尔顿表示,亚马逊数据中心大多数放置50000台到80000台服务器,功率容量在25兆瓦到30兆瓦之间。
汉密尔顿说:“在我们看来,这个数量大致适宜,长期以来我们选择以这个数量来建立数据中心。我们可以建立更大的数据中心。问题是,早期的规模优势很大,但是到了一定阶段,这些优势就会减小。就每个机架的成本而言,一个真正巨大的数据中心比中等规模的数据中心略微便宜。”
多大才算大?
随着数据中心越来越大,作为公司网络的一部分,它们也带来了更大的风险。
瓦格尔说:“由于我们所说的‘爆炸半径’(blast radius),建造过大的数据中心并不可取。”这个行业术语是指根据单一的破坏性地区活动来评估风险。“数据中心仍是故障单元。你建造的数据中心规模越大,这类故障可能造成的影响就越大。我们确实喜欢把数据中心的规模保持在每个数据中心放置的服务器不到100000台。”
那么,亚马逊网络服务在运行几台服务器呢?按照汉密尔顿和瓦格尔的说法,这个数字至少是150万台。搞清楚上限比较困难,不过据The Platform网站的蒂莫西·普里克特·摩根(Timothy Prickett Morgan)估算,服务器可能多达560万台。
亚马逊向多家批发数据中心提供商租用数据中心大楼,包括Digital Realty Trust和Corporate Office Properties Trust。在过去,这家公司通常租赁仓库之类的旧大楼,然后装修一新,用于数据中心。近些年来,亚马逊开始专注于新大楼,提供了可以定制的“绿地”,支持其所有设计要素:从电网到服务器,不一而足。在俄勒冈州,亚马逊采用预制的“模块化”数据中心部件来加快扩建。
亚马逊开发数据中心的做法有一个值得关注的地方,那就是它能够设计和建造自己的变电站。这种特殊化出于需要加快速度,而不是管控成本。
汉密尔顿说:“你节省不了多少成本。有用之处在于,那样我们可以大大加快建造速度。我们的增长速度对公用事业公司来说并不寻常。我们之所以这么做,是因为只能这样。不过我们能这么做太好了。”
定制服务器和存储
在云平台的发展初期阶段,亚马逊向领先厂商购买服务器。其中一家主要提供商是Rackable Systems,这家公司很早就涉足创新的云规模服务器设计领域。2008年,亚马逊向Rackable购买了价值8600万美元的服务器,2007年的购买金额是5600万美元。
不过随着业务扩大,亚马逊效仿谷歌的做法,开始为其数据中心研制定制硬件。这让亚马逊得以微调其服务器、存储和网络设备,以获得最高性价比,因而可以更有效地控制性能和成本。
瓦格尔说:“是的,我们在自建服务器。我们可以买现成服务器,但价格很贵,而且只适用于很一般的用途。于是,我们研制定制存储系统和服务器,以满足这些工作负载的需要。我们与英特尔合作,研制能够在极高的时钟频率下运行的普通处理器。这让我们得以研制出可以支持非常具体的工作负载的定制服务器。”
亚马逊的定制服务器和存储系统
图片来源:亚马逊网络服务公司的詹姆斯·汉密尔顿
亚马逊提供的多种类型的EC2实例就采用了这种定制芯片,这是增强版的至强E5处理器,基于英特尔的Haswell架构和22纳米工艺技术。不同的配置针对计算密集型应用、内存密集型应用和IOPS密集型应用进行了优化。
汉密尔顿说:“我们知道如何根据某种规格来制造服务器,因而,可以更充分地挖掘处理器的性能。”
AWS为网络自行设计软硬件,而网络可能是其基础设施中最具挑战性的一部分。瓦格尔表示,在数据中心支出中,服务器仍然占大头,不过虽然服务器和存储系统越来越便宜,可是网络这一块的成本在提高。
光速vs云
网络中的“光速因素”在亚马逊如何设计基础设施方面扮演了重大角色。
汉密尔顿说:“大多数客户的工作方式是,应用程序在单一数据中心中运行;你不遗余力地确保数据中心尽量可靠;可是最后你认识到,只能获得三个9(99.9%)的正常运行时间。一旦你弄来了一个高可靠性应用程序,就在两个数据中心中运行它。两者通常相距很远,所以回程很远。这可以有效地防范罕见问题。”
瓦格尔说:“跨多个数据中心搞分布式开发变得很难,如果它们在地理位置上相距甚远,更是困难重重。”
解决之道就是可用性区域:某个地区里面的数据中心集群让客户可以在几个隔离的地方运行实例,以免单一故障点。如果客户将实例和数据分布在多个可用性区域(AZ),倘若一个实例失效,可以将应用程序设计成另一个可用性区域的实例可以处理请求。每个地区有2个到6个可用性区域。
亚马逊起初并未过多透露可用性区域的物理布局,这让一些客户想知道他们是不是同一数据中心里面不同的数据厅(data hall)。该公司此后澄清,每个可用性区域驻留在不同的大楼。汉密尔顿说:“它是不同的数据中心。我们不想用完可用性区域,于是我们在添加数据中心。”
为此,可用性区域需要彼此隔离开来,但是又要建得足够近,确保低延迟网络连接。亚马逊表示,可用性区域之间的延迟通常是1毫秒到2毫秒,相比之下数据从纽约传输到洛杉矶的延迟是70毫秒。
瓦格尔说:“我们已决定将可用性区域建得相对比较近。然而,它们需要处于不同的洪泛区和不同的地理区域,连接到不同的电网,确保它们真正彼此隔离开来。”
相关阅读:
欢迎加入,群主微信:aclood